home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
ACORNUSERS
/
EMULATOR
/
BABE
/
!Babe
/
WimpLib
(
.txt
)
< prev
Wrap
RISC OS BBC BASIC V Source
|
1995-05-12
|
13KB
|
454 lines
Wimp Library
David Sharp 1997
Windows
Icons
Menus
Files
Messages
Misc
Errors
****************************** Window Handling Routines *******************
Bring a window to the front of the screen
Wimp_WindowToTop(window%)
wimp%!0=window%
"Wimp_GetWindowState",,wimp%
wimp%!28=-1
"Wimp_OpenWindow",,wimp%
Close a window
Wimp_WindowClose(window%)
!wimp%=window%
"Wimp_CloseWindow",,wimp%
Open the notify window, trap mouse and make beep
Wimp_Notify(message$)
"Wimp_SetCaretPosition",-1 :
remove caret
Wimp_IconPutText(notify_Window%,3,message$)
1
Wimp_OpenWindowMiddle(notify_Window%,0,0)
!>
wimp%!4,wimp%!8,wimp%!12-wimp%!4,wimp%!16-wimp%!8
beep
#*
Wimp_IconCaret(notify_Window%,8,0)
Open a window in the middle of the screen
Wimp_OpenWindowMiddle(window%,ofstX%,ofstY%)
x%,y%,w%,h%
x%=(
os_x/2)+ofstX%
*G y%=(
os_y/2)+ofstY% :
y = middle of screen plus any
+@ !wimp%=window% :
get info about window
,&
"Wimp_GetWindowState",,wimp%
-9 w%=(wimp%!12-wimp%!4)/2 :
window width/2
.: h%=(wimp%!16-wimp%!8)/2 :
window height/2
wimp%!4 =x%-w%
wimp%!8 =y%-h%
wimp%!12=x%+w%
wimp%!16=y%+h%
3A wimp%!28=-1 :
ensure top of window stack
4"
"Wimp_OpenWindow",,wimp%
Wimp_WindowAlertBox(title$,message$,button%)
response%
$(wimp%+4)=message$
button%
2 : response%=1
1 : response%=15
=&
3 : response%=(1<<5)+16
>&
4 : response%=(1<<6)+16
: response%=16
A@
"Wimp_ReportError",wimp%,response%,title$
,response%
Wimp_WindowAlert(title$,message$)
E.
Wimp_WindowAlertBox(title$,message$,0)
Wimp_LoadWindow(buf%,
I%,IE%,F%,W$)
J8
"Wimp_LoadTemplate",,buf%,I%,IE%,F%,W$,0
,,I%
K(
"Wimp_CreateWindow",,buf%
************************ Icon Handling Routines *************************
return TRUE/FALSE is icon is selected/unselected
Wimp_IconSelected(window%,icon%)
wimp%!0=window%
wimp%!4=icon%
X$
"Wimp_GetIconState",,wimp%
=(wimp%!24 >> 21)
set an icon to be selected
Wimp_SelectIcon(window%,icon%)
wimp%!0=window%
wimp%!4=icon%
_& wimp%!8=%1000000000000000000000
`' wimp%!12=%1000000000000000000000
a$
"Wimp_SetIconState",,wimp%
set an icon to be NOT selected
Wimp_UnselectIcon(window%,icon%)
wimp%!0=window%
wimp%!4=icon%
wimp%!8=%0
i' wimp%!12=%1000000000000000000000
j$
"Wimp_SetIconState",,wimp%
Create icon on the icon bar
Wimp_CreateIconBar(sprite$,side%)
pB wimp%!0=side% :
-1 for right, -2 for left
q: wimp%!4=0 :
min x co-ordinate
r: wimp%!8=0 :
min y co-ordinate
s: wimp%!12=68 :
max x co-ordinate
t: wimp%!16=68 :
max y co-ordinate
uB wimp%!20=12290 :
icon flags (sprite+click)
v4 $(wimp%+24)=sprite$ :
sprite name
w(
"Wimp_CreateIcon",,wimp%
'grey out' an icon
Wimp_IconDisable(window%,icon%)
wimp%!0=window%
wimp%!4=icon%
wimp%!8=1<<22
wimp%!12=1<<22
"Wimp_SetIconState",,wimp%
re-enable and reverse 'grey out' of an icon
Wimp_IconEnable(window%,icon%)
wimp%!0=window%
wimp%!4=icon%
wimp%!8=0
wimp%!12=1<<22
"Wimp_SetIconState",,wimp%
Wimp_IconGetText(window%,icon%)
wimp%!0=window%
wimp%!4=icon%
"Wimp_GetIconState",,wimp%
=$(wimp%!28)
Wimp_IconPutText(window%,icon%,text$)
wimp%!0=window%
wimp%!4=icon%
"Wimp_GetIconState",,wimp%
$(wimp%!28)=text$
wimp%!8=0
wimp%!12=0
"Wimp_SetIconState",,wimp%
Wimp_IconPutSprite(window%,icon%,sprite$)
@ wimp%!0=window%
@ wimp%!4=icon%
"Wimp_GetIconState",,wimp%
$(wimp%!28)=sprite$+
N wimp%!32=1 :
Wimp sprite pool
wimp%!36=
sprite$
$(wimp%!32)="S"+sprite$ :REM ######## Removed
wimp%!8 =0
wimp%!12=0
"Wimp_SetIconState",,wimp%
Wimp_IconCaret(window%,icon%,chars%)
"Wimp_SetCaretPosition",window%,icon%,,,-1,chars%
Wimp_SetBarWidth(D%,E%,F%)
D% = window%, E% = icon%, F% = width%
setbarwidth%
6
icon(!block%,text$,L%,B%,W%,H%,block%!20)
;block%!4=L%:block%!8=B%:block%!12=L%+W%:block%!16=B%+H%
text$<>"" $(block%+24)=text$
262338,,block%
ind_icon(window%,
buff%,block%!28,len%,text$,L%,B%,W%,H%,F%)
buff% len%
$buff%=text$
block%!24=buff%
block%!32=len%+1
icon(window%,"",L%,B%,W%,H%,F%
&100)
Create icon in window
Wimp_CreateIcon(window%,text$,valid$,x%,y%,width%,height%,tl%,flags%)
validation%,text_block%
tl%<
(text$)
tl%=
(text$) :
ensure length sl%>=text$
text_block% tl% :
claim memory for text
valid$<>""
validation%
(valid$)+2
claim mem for validation
N wimp%!0=window% :
select window to create in
P wimp%!4=x% :
set pos of left side of icon
R wimp%!8=y%-height% :
set pos of bottom side of icon
Q wimp%!12=width% :
set pos of right side of icon
O wimp%!16=y% :
set pos of top side of icon
F $text_block%=text$ :
put text in memory
B wimp%!20=flags% :
set icon flags
L wimp%!24=text_block% :
set pointer to text area
valid$=""
wimp%!28=-1
wimp%!28=validation%
set pointer to validation or -1 if none
K wimp%!32=tl% :
set length of text area
"Wimp_CreateIcon",,wimp%
icon%
=icon%
Wimp_DeleteIcon(window%,icon%)
minx%,miny%,maxx%,maxy%
< wimp%!0=window% :
set window handle
: wimp%!4=icon% :
set icon handle
"Wimp_GetIconState",,wimp% :
get icon dimensions
@ minx%=wimp%!8 :
store icon dimensions
miny%=wimp%!12
maxx%=wimp%!16
maxy%=wimp%!20
"Wimp_DeleteIcon",,wimp% :
delete icon
"Wimp_ForceRedraw",window%,minx%,miny%,maxx%,maxy%
redraw area of icon to remove icon image from window
****************************** Menu Handling Routines *********************
Wimp_OpenMenu(Menu%,x%,y%)
menu%=Menu%
"Wimp_CreateMenu",,menu%,x%,y%
Wimp_MenuClose
"Wimp_CreateMenu",-1
SaveMenuData
B=
("Mem:$.menudata")
"OS_GBPB",2,B,bar_Menu%,28+(3*24)
"OS_GBPB",2,B,save_Menu%,28+(2*24)
"OS_GBPB",2,B,main_Menu%,28+(6*24)
Wimp_MenuTick(menu%,item%)
: menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))
Wimp_MenuStart(title$,name%,width%)
menu%=name%
/ $(menu%)=title$+
(0) :
title for menu
C menu%!12=7 :
title foreground & frame colour
; menu%!13=2 :
title background colour
: menu%!14=7 :
menu foreground colour
: menu%!15=0 :
menu background colour
2 menu%!16=width% :
width (pixels)
@ menu%!20=44 :
height of each item (pixels)
G menu%!24=0 :
vertical gap between items (pixels)
menu%+=28
Wimp_MenuAddString(item$,submenu%)
= menu%!0=0 :
flags (see page 1226 PRM)
3 menu%!4=submenu% :
submenu pointer
A menu%!8=&7000031 :
iconflags (see page 1181 PRM)
> $(menu%+12)=item$+
(0) :
icon data (see page 1183 PRM)
menu%+=24
Wimp_MenuAddLong(item%,submenu%)
' menu%!0=0 :
flags
5 menu%!4=submenu% :
any submenu present
, menu%!8=&7000121 :
icon flags
& menu%!12=item% :
text
, menu%!16=0 :
validation
7 menu%!20=
($item%) :
length of text
menu%+=24
Wimp_MenuEnd
$ menu%!(-24)=menu%!(-24)
Wimp_MenuDisable(menu%,item%)
> menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)
(1<<22)
Wimp_MenuEnable(menu%,item%)
"%
Wimp_MenuDisable(menu%,item%)
#> menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)
(1<<22)
Wimp_MenuDottedLine(menu%,item%)
': menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))
Menu_ItemNumber(stage%)
=(wimp%!(4*stage%))+1
****************************** File Handling ******************************
GiveFileType(type%)
~(type%)
GetLeafName(file$)
a%=
file$,".")
file$=
file$,a%+1)
a%=0
=file$
Wimp_FileSize(file$)
:.
"OS_File",13,file$
,,,,filelength%
=filelength%
Wimp_LoadFileToMemory(file$,address%)
>'
"OS_File",12,file$,address%,0
****************************** Messages *****************************
Wimp_GetMessage(token$)
(token$)>tokensize%
E2
Wimp_Notify(
Wimp_GetMessage("DBG001"))
G% $messages_token%=token$+":"
H%=filesize%
findmessage%
=$message%
Wimp_LoadMessages(file$)
N& filesize%=
Wimp_FileSize(file$)
OF
messages_buff% filesize% :
define area for messages file
P3
Wimp_LoadFileToMemory(file$,messages_buff%)
****************************** Misc **********************************
Wimp_GetScreenVariables
!wimp%=4
wimp%!4=5
wimp%!8=11
wimp%!12=12
wimp%!16=-1
"OS_ReadVduVariables",wimp%,wimp%
\, screenwidth%=(wimp%!8+1)*(1<<(!wimp%))
]/ screenheight%=(wimp%!12+1)*(1<<(wimp%!4))
^ xeig%=wimp%!28+1<<wimp%!20
_ yeig%=wimp%!32+1<<wimp%!24
xpix%,xeigfactor%
d/
"OS_ReadModeVariable",-1,11
,,xpix%
e4
"OS_ReadModeVariable",-1,4
,,xeigfactor%
=(xpix%+1)<<xeigfactor%
ypix%,yeigfactor%
j/
"OS_ReadModeVariable",-1,12
,,ypix%
k4
"OS_ReadModeVariable",-1,5
,,yeigfactor%
=(ypix%+1)<<yeigfactor%
GetString(str%)
?str%>31
a$+=
(?str%)
str%+=1
Wimp_GetStringAtAddress(array%)
s$=""
y&
(?array%<>13)
(?array%<>0)
s$+=
(?array%)
array%+=1
EvalSYSVariable(Var$)
"OS_EvaluateExpression",Var$,ret%,100
,t%,l%
ret%?l%=13
=$ret%
FileExists(file$)
"OS_File",13,file$
found%
=found%
SpriteExists(sprite$)
"Wimp_BaseOfSprites"
,ramsprites%
"Wimp_SpriteOp",40,ramsprites%,sprite$
,,,found%
=found%
Wimp_IconBarMenuPos(Menu%,IconBar_Icon%,
menu_x_pos%,
menu_y_pos%)
x%,wx%,MenuSpacing%,MenuEntries%,Dividers%,MenuWidth%,I%,L%,T$
MenuEntries%=1
Dividers% =0
MenuSpacing%=Menu%!20
I%=Menu%+28
((?I%>>7)
MenuEntries%+=1
((?I%>>1)
1)=1
Dividers%+=1
((I%?9)
1)=1
GetString(I%!12)
GetString(I%+12)
L%>MenuWidth% MenuWidth%=L%
I%+=24
MenuWidth%+=1
First get the x origin of the icon bar window
wimp%!0=-2
"Wimp_GetWindowState",,wimp%
Cwx%=wimp%!4+wimp%!20 :
wx%=min x origin of icon bar window
wimp%!0=-2
wimp%!4=IconBar_Icon%
"Wimp_GetIconState",,wimp%
x%=wimp%!8-wx%
)menu_x_pos%=x%+34-(MenuWidth%
2*16+8)
=menu_y_pos%=96+(Dividers%*24)+(MenuEntries%*MenuSpacing%)
-------------------------------------------------------------------
Procedure to remove all fonts loaded with the templates provided
they have been defined and used.
-------------------------------------------------------------------
lose_fonts(fonts%)
use%,font%
font%=0
(fonts%?font%)>0
use%=1
fonts%?font%
!
"XFont_LoseFont",font%
************************ Error handling routines **************************
these are the error handling routines once the LIBRARY has been initialised